home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / ingres04.lzh / source / monitor / include.c < prev    next >
Encoding:
C/C++ Source or Header  |  1985-01-23  |  1.4 KB  |  86 lines

  1. # include    "monitor.h"
  2. # include    <ingres.h>
  3. # include    <aux.h>
  4. # include    <sccs.h>
  5.  
  6. SCCSID(@(#)include.c    8.1    12/31/84)
  7.  
  8.  
  9.  
  10. /*
  11. **  INCLUDE FILE
  12. **
  13. **    A file name, which must follow the \i, is read and inserted
  14. **    into the text stream at this location.  It may include all of
  15. **    the standard control functions.  Includes may be nested.
  16. **
  17. **    If the parameter is 0, the file name is taken from the input;
  18. **    otherwise it is taken directly from the parameter.  In this
  19. **    mode, errors are not printed.
  20. **
  21. **    Prompts are turned off during the include.
  22. */
  23.  
  24. include(filename)
  25. char    *filename;
  26. {
  27.     int            savendf;
  28.     FILE            *saveinp;
  29.     register char        *f;
  30.     register FILE        *b;
  31.     extern char        *getfilenm();
  32.  
  33.     f = filename;
  34.     if (f == 0)
  35.         f = getfilenm();
  36.     if (sequal(f, "-"))
  37.     {
  38.         /* read keyboard */
  39.         b = stdin;
  40.     }
  41.     else if (*f == 0)
  42.     {
  43.         /* back up one level (EOF on next read) */
  44.         GiveEof = TRUE;
  45.         return;
  46.     }
  47.     else
  48.     {
  49.         /* read file */
  50.         if ((b = fopen(f, "r")) == NULL)
  51.         {
  52.             if (filename == 0)
  53.                 printf("Cannot open \"%s\"\n", f);
  54.             return;
  55.         }
  56.     }
  57.  
  58.     /* check for too deep */
  59.     if (Idepth >= 5)
  60.     {
  61.         printf("Include nested too deep\n");
  62.         if (b)
  63.             fclose(b);
  64.         return;
  65.     }
  66.     Idepth++;
  67.  
  68.     /* get input from alternate file */
  69.     savendf = Nodayfile;
  70.     if (b == stdin)
  71.     {
  72.         Nodayfile = Userdflag;
  73.         prompt("<<input>>");
  74.     }
  75.     else
  76.         Nodayfile = -1;
  77.     saveinp = Input;
  78.     Input = b;
  79.     monitor(TRUE);
  80.  
  81.     /* done -- restore old file */
  82.     Input = saveinp;
  83.     Nodayfile = savendf;
  84.     Idepth--;
  85. }
  86.